/**
 * 字典模块服务文件
 */

const db = require('../db/dictionary');

/**
 * 添加
 * @param {*} ctx 
 */
const add = async ctx => {
    try {
        const { name, type } = ctx.request.body;
        const result = await db.exists(name, type);
        if (result) {
            return ctx.body = {
                code: 0,
                msg: '此分类下已存在相同的名称'
            }
        }
        await db.add({ name, type });
        ctx.body = {
            code: 1,
            msg: '字典数据添加成功'
        }
    } catch (error) {
        ctx.app.emit('error', error);
        ctx.body = {
            code: 0,
            msg: '字典数据添加失败'
        }
    }
}

/**
 * 修改
 * @param {*} ctx 
 */
const update = async ctx => {
    try {
        const { id, name, type } = ctx.request.body;
        const result = await db.exists(name, type, id);
        if (result) {
            return ctx.body = {
                code: 0,
                msg: '此分类下已存在相同的名称'
            }
        }
        await db.update({ id, name, type });
        ctx.body = {
            code: 1,
            msg: '字典数据修改成功'
        }
    } catch (error) {
        ctx.app.emit('error', error);
        ctx.body = {
            code: 0,
            msg: '字典数据修改失败'
        }
    }
}

/**
 * 获取所有
 * @param {*} ctx 
 */
const getAll = async ctx => {
    try {
        const data = await db.getAll();
        ctx.body = {
            code: 1,
            data
        }
    } catch (error) {
        ctx.app.emit('error', error);
        ctx.body = {
            code: 0,
            msg: '字典数据获取失败'
        }
    }
}

module.exports = {
    add,
    update,
    getAll
}